﻿--============================================================
--Cập nhật các store procedure cho dữ liệu mới
--============================================================
-- Ghi chú khi đi đồng bộ CSDL
/* Do phân lại giá trị các bộ phận khi xác nhận phiếu
-- BCTH = 0 (KH chưa xác nhận) 
-- BCTH = 1 (KH xác nhận)
-- BCTH = 2 (TCT xác nhận)
-- BCTH = 3 (Kho xác nhận)
-- BCTH = 4 (TCSL xác nhận)*/

--============================================================
--Ngày 2014-04-14: Cập nhật lại ghi chú
--============================================================
go
-- =============================================
-- Author:		HT
-- Update date: 2014-04-14
-- Update content: Cập nhật description cho store procedure
-- Description:	
-- Kiểm tra xem ngày của phiếu có trước ngày tạo tồn không, nếu có thì cập nhật lại ngày tạo tồn
-- Ví dụ: Ngày tạo tồn là ngày 25/01/2014 mà ngày tạo phiếu là ngày 22/01/2014 thì cập nhật lại
-- ngày tạo tồn thành 22/01/2014
-- =============================================
ALTER     proc [dbo].[sp_UpdateNgayTTon]
@mathang_id as numeric(10,0), @ngaydpnx as smalldatetime
as
begin
		declare @ngay as smalldatetime
		--Lấy ngày tạo tồn hiện tại
		select @ngay = ngtton from tblTON where mathang_id = @mathang_id
				
		-- Kiểm tra nếu ngày tạo tồn hiện tại (@ngay) > ngày lập phiếu (@ngaydpnx) 
		-- thì cập nhật lại ngày tạo tồn
		if @ngaydpnx < @ngay
		begin
			update tblTON
			set ngtton = @ngaydpnx
			where mathang_id = @mathang_id
		end
end



--============================================================
--Ngày 2014-04-19:
-- Tách sp_UpdateSLTONMatHangByDPNX_ID thành 2 function riêng:
-- 1) sp_ResetSLTONByDPNX: dùng cho kế hoạch cập nhật phiếu NX thông thường
-- 2) sp_ResetSLTONByDPNX_DCSS: dùng cho kế hoạch cập nhật phiếu NX DCSS

--Remove store sp_UpdateSLTONMatHangByDPNX_ID
--============================================================

go
	--============================================================
-- Author: Hoàng Tuấn
-- ALTER  date: 2014/05/22
-- Description: Chuyển số liệu sang năm mới
-- 2014/05/22: thêm dòng xóa tblLog sau khi chuyển sang năm mới
--============================================================
ALTER procedure [dbo].[sp_ChuyenDuLieuDauNam]
as
begin
	set dateformat mdy
	declare @mathang_id as int
	--B1: Reset cac gia tri duoi ve gia tri  = 0
	-- truoc khi sang buoc 2 
	-- (tranh nhung truong hop o buoc 2 khong liet ke duoc 
	-- nhung mat hang khong nhap xuat dot kiem ke 1/7 nam truoc den 1/1 nam nay)
	-- nhung lai co sln17t, slx17t, slss11t, slndk11t, slxdk11t > 0
	update tblTON
	set sln17t=0, slx17t=0, slss11t = 0, slndk11t = 0, slxdk11t = 0

	--B2: Cap nhat lai sln17t, slx17t
	--B2.1: Chi lay nhung mat hang co nhap xuat sau dot kiem ke 1/7 nam truoc den 1/1 nam nay
	-- Cap nhat sln17t (luy tich nhap dot kiem ke 1/7 nam truoc den 1/1 nam nay)
	-- cua nhung phieu nhap lam thay doi so luong ton kho
	declare @sln17t as real
	declare cur_sln17t cursor for
	select mathang_id, sum(slth) as slth from tblSLNX
	where dpnx_id in (select dpnx_id from tblDPNX 
				where nx = 'N' 
				and ngay > (select ngayKK from tblDPKK where year(ngayKK)= year(getdate())-1)
				and ngay < '1/1/' + Cast(DatePart(year, Getdate()) as nvarchar(4)))
	group by mathang_id


	open cur_sln17t
	fetch next from cur_sln17t into @mathang_id, @sln17t
	while @@fetch_status = 0
	begin
		update tblTON
		set sln17t = @sln17t
		where mathang_id = @mathang_id
		fetch next from cur_sln17t into @mathang_id,@sln17t			
	end
	close cur_sln17t
	deallocate cur_sln17t

	--B2.2: Chi lay nhung mat hang co nhap xuat dot kiem ke 1/7 nam truoc den 1/1 nam nay
	-- Cap nhat slx17t (luy tich nhap dot kiem ke 1/7 nam truoc den 1/1 nam nay)
	-- cua nhung phieu xuat lam thay doi so luong ton kho
	declare @slx17t as real
	declare cur_slx17t cursor for
	select mathang_id, sum(slth) as slth from tblSLNX
	where dpnx_id in (select dpnx_id from tblDPNX 
				where nx = 'X' 
				and ngay > (select ngayKK from tblDPKK where year(ngayKK)= year(getdate())-1)
				and ngay < '1/1/' + Cast(DatePart(year, Getdate()) as nvarchar(4)))
	group by mathang_id

	open cur_slx17t
	fetch next from cur_slx17t into @mathang_id, @slx17t
	while @@fetch_status = 0
	begin
		update tblTON
		set slx17t = @slx17t
		where mathang_id = @mathang_id
		fetch next from cur_slx17t into @mathang_id, @slx17t			
	end
	close cur_slx17t
	deallocate cur_slx17t

	--B1: Sau khi cap nhat sln17t, slx17t ta xoa het ca phieu NX co ngay < 1/1 nam nay(nam nhap phieu < nam hien tai(là năm thực hiện trích lưu))
	delete tblSLNX
	delete tblDPNX
	delete tblHOPDONG
	--Delete sltonss = 0
	delete from tblTON where sltonss = 0 and sltonkh = 0 and sltonth = 0

	--Chuyển các số liệu dang cột lưu dùng cho báo cáo
	update tblTON
	set ngtton = cast(('1/1/' + cast(datepart(year, getdate()) as nvarchar(4))) as smalldatetime),
	slss11t = slss11,
	slkk11t = slkk11,
	slndk11t = slndkth,
	slxdk11t = slxdkth,
	slss11 = sltonss,
	slkk11 = 0,
	slss17t = slss17,
	slkk17t = slkk17,
	slss17 = 0,
	slkk17 = 0,
	slndkkh = 0,
	slxdkkh =0,
	slndkth = 0,
	slxdkth = 0

	--2014-05-22: Xóa log
	delete tblLog
end


go
--===============================================================
--2014-05-22:
-- Bỏ column dbo.tblDPNX.TCSL trong viewSoKho
alter VIEW [dbo].[viewSoKho]
AS
SELECT     dbo.tblDPNX.DPNX_ID, (CASE WHEN dbo.tblDPNX.NX = 'N' THEN dbo.tblDPNX.SOPHIEU ELSE '' END) AS SONHAP, 
                      (CASE WHEN dbo.tblDPNX.NX = 'X' THEN dbo.tblDPNX.SOPHIEU ELSE '' END) AS SOXUAT, dbo.tblDPNX.NX, dbo.tblDPNX.SOPHIEU, dbo.tblDPNX.DVGN, 
                      dbo.tblDPNX.KYQT, dbo.tblSLNX.SLNX_ID, dbo.tblSLNX.SLKH, dbo.tblSLNX.GHICHU_SOKHO, dbo.tblDMKHAC.TEN AS TEN_DVGN, 
                      dbo.tblDPNX.NGAY, (CASE WHEN dbo.tblDPNX.NX = 'N' THEN dbo.tblSLNX.SLKH ELSE 0 END) AS SL_NHAP, 
                      (CASE WHEN dbo.tblDPNX.NX = 'X' THEN dbo.tblSLNX.SLKH ELSE 0 END) AS SL_XUAT, dbo.tblTON.ten, dbo.tblTON.lo, dbo.tblTON.h, dbo.tblTON.hansd, 
                      dbo.tblTON.dvt, dbo.tblTON.gle, dbo.tblTON.kho, dbo.tblTON.ten + ISNULL(dbo.tblTON.lo, '') + dbo.tblTON.ma + dbo.tblTON.code AS ten_lo, dbo.tblTON.slss11, 
                      dbo.tblTON.slkk11, dbo.tblTON.ngtton, dbo.tblTON.mathang_id, (CASE WHEN dbo.tblDPNX.NX = 'N' THEN dbo.tblSLNX.SLKH ELSE 0 END) AS SLNHAP, 
                      (CASE WHEN dbo.tblDPNX.NX = 'X' THEN dbo.tblSLNX.SLKH ELSE 0 END) AS SLXUAT, dbo.tblTON.slss17, dbo.tblTON.slkk17
FROM         dbo.tblDPNX INNER JOIN
                      dbo.tblSLNX ON dbo.tblDPNX.DPNX_ID = dbo.tblSLNX.DPNX_ID INNER JOIN
                      dbo.tblDMKHAC ON dbo.tblDPNX.DVGN = dbo.tblDMKHAC.KH RIGHT OUTER JOIN
                      dbo.tblTON ON dbo.tblSLNX.MATHANG_ID = dbo.tblTON.mathang_id